/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package controller;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.beans.Pedido;
import model.dao.MySQLPizzariaDAOFactory;
import model.dao.interfaces.PedidoDAO;

/**
 *
 * @author ubuntu
 */
public class ServletTratadorRequisicao extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        
        //cria novo pedido e seta campos
        Pedido pedido = new Pedido(); 
        
        pedido.setNome(request.getParameter("nome"));
        pedido.setEndereco(request.getParameter("endereco"));
        pedido.setTelefone(request.getParameter("telefone"));
        pedido.setPizzas(request.getParameter("pizzas"));
        
        String msg = null;
                
        if (pedido.valido()){ //se pedido está válido, ou seja, todos os campos foram preenchidos
            try{
                // tenta gravar o pedido no banco
                PedidoDAO pedidoDAO = MySQLPizzariaDAOFactory.getPedidoDAO();              
                if(pedidoDAO.save(pedido)){
                    //se grava, retorna mensagem de sucesso
                    msg = "<p> Seu pedido foi realizado com sucesso! </p> "
                            + "<br> Em breve receberá sua pizza quentinha no endereço indicado. </br><br> Hummmmmm... =D</br> "
                            + "<p> Agradecemos pela preferência! ;]</p>";
                    response.sendRedirect("index.jsp?comboNavegacao="
                            + "paginaRetorno.jsp&mensagemRetorno=" + msg);
                }
            }catch (Exception ex){
                //se não consegue gravar, retorna mensagem de erro no banco
                msg = "<p> Falha no banco de dados. </p> <br> Por favor, tente mais tarde. "
                            + " Se o problema persistir, contate o administrador do site. </br> <p> "
                            + "Agradecemos a compreensão e pedimos desculpas pelo transtorno! =[</p>";                  
                response.sendRedirect("index.jsp?comboNavegacao="
                        + "paginaRetorno.jsp&mensagemRetorno=" + msg);
                ex.printStackTrace();
            }
        }else{
            //se pedido não está válido, retorna mensagem solicitando preenchimento do campo em branco
            if(pedido.getNome() == null || pedido.getNome().equals("")){
                msg = "<p> Ops! Falha ao digitar o pedido! </p> <br> Todos os campos precisam ser preenchidos.<br></br> Favor preencher o campo Nome. =]</br> ";   
            }
            else if (pedido.getEndereco() == null || pedido.getEndereco().equals("")) {
                msg = "<p> Ops! Falha ao digitar o pedido! </p> <br> Todos os campos precisam ser preenchidos.<br></br> Favor preencher o campo Endereço. =]</br> ";   
            }
            else if (pedido.getTelefone() == null || pedido.getTelefone().equals("")) {
                msg = "<p> Ops! Falha ao digitar o pedido! </p> <br> Todos os campos precisam ser preenchidos.<br></br> Favor preencher o campo Telefone. =]</br> ";   
            }
            else if (pedido.getPizzas() == null || pedido.getPizzas().equals("")){
                msg = "<p> Ops! Falha ao digitar o pedido! </p> <br> Todos os campos precisam ser preenchidos.<br></br> Favor preencher o campo Pizzas. =]</br> ";   
            }

            response.sendRedirect("index.jsp?comboNavegacao="
                    + "paginaRetorno.jsp&mensagemRetorno=" + msg);
        }        
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
